﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;

using ParamSetCollection.General.Parameters.Normal;
using ParamSetCollection.General.Parameters.Alarms;
using MainController.Hardware.PLC.MEGMEET.Communication;
using MainController.Hardware.PLC.MEGMEET.Datas;
using ParamSetCollection.General.ParamTable.JTRII;
using ParamSetCollection.General.ParamTable;

namespace MainController.Hardware.PLC.MEGMEET
{
    public class MegPlc : PlcBasic
    {

        #region============================== 变量 ====================================


        CommHelper commHelper = null;
        AlarmsHelper alarmHelper = null;
        DataHelper dataHelper = null;

        Thread updateThre = null;

        bool m_updateEn = false;//可更新参数标志
        #endregion=====================================================================


        #region============================== 属性 ====================================
        #endregion=====================================================================


        #region============================= 内部函数 ================================
        private void InitAll()
        {
            //MegTable table = new MegTable();

            commHelper = new CommHelper();//需要设定IP,和端口

            //alarmHelper = new AlarmsHelper(table.alarmInfo, "JTR", commHelper.EmData);
            //dataHelper = new DataHelper(new MegTable(),"JTR",commHelper.EmData);



            updateThre = new Thread(new ThreadStart(UpdateThread));
            updateThre.IsBackground = true;
            updateThre.Start();
        }


        #endregion====================================================================


        #region============================= 保护函数 ================================
        private void UpdateThread()
        {
            while (true)
            {
                try
                {
                    if (m_updateEn == true)
                    {
                        m_updateEn = false;
                        UpdateProcess();

                    }

                    Thread.Sleep(200);
                }
                catch (Exception ex)
                {

                    Thread.Sleep(200);

                }
            }
        }

        private void UpdateProcess()
        {

            //刷新报警
            alarmHelper.RenewData();

            //刷新参数
            dataHelper.RenewData();
        }
        #endregion====================================================================


        #region============================= 公开函数 ================================
        public MegPlc()
            :base()
        {
            InitAll();

        }


        public override void InitParams(ParamHelper tableData)
        {
            //把参数读入DataHelper
            dataHelper = new DataHelper(tableData, commHelper);

        }

        public override void Start()
        {
            commHelper.Start();
        }


        public override void Stop()
        {
            commHelper.Stop();
        }





        public override void DownloadCtx()
        {

        }



        public override void ExecuteCmds(List<ParamUnit> pu)
        {


        }


        public override void DownLoadRcp(string path)
        {

        }




        public override void ReduceParamRange(ParamUnit param)
        {

        }


        public override List<ParamUnit> GetSpecificParams(string type)
        {


            return null;
        }







        public override string GetBarCode()
        {

            return null;
        }
        #endregion====================================================================


        #region============================= 消息响应 ================================
        #endregion====================================================================

    }
}
